package team.se.tms.service;

import org.springframework.web.multipart.MultipartFile;
import team.se.tms.dto.Page;
import team.se.tms.dto.UserDetail;
import team.se.tms.po.UserInfo;

import java.util.List;

/**
 * 用户信息业务层接口,定义了用户信息业务层调用的方法
 *
 * @author winkyle
 * @date 2018/11/6
 */
public interface UserInfoService {

    /**
     * 根据帐号获取用户信息
     * 
     * @param account 帐号
     * @return 用户信息
     * @throws Exception 异常
     * @create on 2018/11/15 by winkyle
     */
    UserInfo getUserInfo(String account) throws Exception;

    /**
     * 根据用户id获取用户信息
     *
     * @param userId 用户id
     * @return 用户信息
     * @throws Exception 异常
     * @create on 2018/12/2 by qingx
     */
    UserInfo getUserState(String userId) throws Exception;

    /**
     * 方法描述
     *
     * @param userId 用户id
     * @param oldPassword 用户原始密码
     * @param newPassword 用户新密码
     * @return String 页面地址
     * @throws Exception 异常
     * @create on 2018/12/22 by johnny
     */
    Boolean modifyUserPassword(String userId,String oldPassword,String newPassword) throws Exception;

    /**
     * @create on 2018/12/28 by argentum
     *
     * @param type 0为学生 1为老师
     * @param id 学号或工号
     * @param info 班级或授课名
     * @return 查出的用户信息
     * @throws Exception 异常
     */
    List<UserDetail> listUserInfos(Page page, int type, String id, String info) throws Exception;

    List<UserDetail> listUserInfos(Page page) throws Exception;

    /**
     * 修改用角色
     * @create on 2018/12/30 by argentum
     *
     * @param userIds
     * @param roleId
     * @return
     * @throws Exception
     */
    Boolean modifyUserInfos(List<String> userIds,String roleId) throws Exception;

    /**
     * 录入用户信息
     * @param userInfo
     * @return
     * @throws Exception
     * @create on 2018/12/31 by qingx
     */
    boolean savaUserInfo(UserInfo userInfo) throws Exception;
}
